home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / gui / model / menus.pyo (.txt) < prev   
Python Compiled Bytecode  |  2008-10-13  |  5KB  |  168 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import wx
  5. import sys
  6. import gui.uberwidgets.umenu as gui
  7. item_types = [
  8.     'normal',
  9.     'checkbox',
  10.     'radio',
  11.     'separator']
  12.  
  13. def wxTypeForItemType(type):
  14.     if not type or type == 'normal':
  15.         return wx.ITEM_NORMAL
  16.     
  17.     if type == 'checkbox':
  18.         return wx.ITEM_CHECK
  19.     
  20.     if type == 'radio':
  21.         return wx.ITEM_RADIO
  22.     
  23.     if type == 'separator':
  24.         return wx.ITEM_SEPARATOR
  25.     
  26.  
  27.  
  28. def set_menubar(parent, menus, umenu = False):
  29.     if not umenu:
  30.         menubar = wx.MenuBar()
  31.     else:
  32.         menubar = gui.uberwidgets.umenu.UMenuBar(parent)
  33.     for menu in menus:
  34.         label = menu.label
  35.         if umenu:
  36.             menu = menu.asUMenu(parent)
  37.         else:
  38.             menu = menu.asWxMenu()
  39.         menubar.Append(menu, label)
  40.     
  41.     if not umenu:
  42.         parent.SetMenuBar(menubar)
  43.     
  44.     return menubar
  45.  
  46.  
  47. class Menu(object):
  48.     
  49.     def __init__(self, label = '', items = None):
  50.         self.label = label
  51.         if items:
  52.             self.items = items
  53.         else:
  54.             self.items = []
  55.  
  56.     
  57.     def __repr__(self):
  58.         return '<Menu "%s"\n%s>' % (self.label, '\n'.join((lambda .0: for item in .0:
  59. '    ' + repr(item))(self)))
  60.  
  61.     
  62.     def __iter__(self):
  63.         return iter(self.items)
  64.  
  65.     
  66.     def __len__(self):
  67.         return len(self.items)
  68.  
  69.     
  70.     def addItem(self, label, description = '', id = None, type = 'normal', defaultAccel = None, customAccel = None, subMenu = None, bitmap = None):
  71.         item = MenuItem(label, description, id, type, defaultAccel, customAccel, subMenu, bitmap)
  72.         self.items.append(item)
  73.         return item
  74.  
  75.     
  76.     def addSep(self):
  77.         item = MenuItem(label = '', type = 'separator')
  78.         self.items.append(item)
  79.         return item
  80.  
  81.     
  82.     def asWxMenu(self):
  83.         menu = wx.Menu()
  84.         for item in self.items:
  85.             menu.AppendItem(item.asWxMenuItem(menu))
  86.         
  87.         return menu
  88.  
  89.     
  90.     def asUMenu(self, parent):
  91.         menu = gui.uberwidgets.umenu.UMenu(parent)
  92.         for item in self.items:
  93.             item.asUMenuItem(menu)
  94.         
  95.         return menu
  96.  
  97.  
  98.  
  99. class MenuItem(object):
  100.     
  101.     def __init__(self, label, description = '', id = None, type = 'normal', defaultAccel = None, customAccel = None, subMenu = None, bitmap = None):
  102.         self.label = label
  103.         self.description = description
  104.         self.defaultAccel = defaultAccel
  105.         self.customAccel = customAccel
  106.         self.type = type
  107.         self.subMenu = subMenu
  108.         self.bitmap = bitmap
  109.         if type == 'separator':
  110.             id = wx.ID_SEPARATOR
  111.         elif id is None:
  112.             id = wx.NewId()
  113.         
  114.         self.id = id
  115.  
  116.     
  117.     def __repr__(self):
  118.         if self.type == 'separator':
  119.             return '<MenuItem (separator)>'
  120.         else:
  121.             return '<MenuItem: id=%d, label=%r, desc=%s, defaultAccel=%s, customAccel=%s, type=%s>' % (self.id, self.label, self.description, self.defaultAccel, self.customAccel, self.type)
  122.  
  123.     
  124.     def asWxMenuItem(self, menu = None):
  125.         label = self.label
  126.         if self.customAccel:
  127.             label += '\t' + self.customAccel
  128.         elif self.defaultAccel:
  129.             label += '\t' + self.defaultAccel
  130.         
  131.         subMenu = None
  132.         if self.subMenu is not None:
  133.             subMenu = self.subMenu.asWxMenu()
  134.         
  135.         item = wx.MenuItem(menu, self.id, label, self.description, wxTypeForItemType(self.type), subMenu)
  136.         if self.bitmap:
  137.             item.SetBitmap(self.bitmap)
  138.         
  139.         return item
  140.  
  141.     
  142.     def asUMenuItem(self, umenu):
  143.         if self.subMenu is not None:
  144.             return umenu.AddSubMenu(self.subMenu.asUMenu(umenu.Window), self.label, self.bitmap)
  145.         else:
  146.             return umenu.Append(self.id, self.label, self.bitmap)
  147.  
  148.  
  149. if __name__ == '__main__':
  150.     
  151.     def _(text):
  152.         return text
  153.  
  154.     from tests.testapp import testapp
  155.     app = testapp('../../..')
  156.     frame = wx.Frame(None, -1)
  157.     frame.Sizer = sizer = wx.BoxSizer(wx.VERTICAL)
  158.     use_umenu = False
  159.     menus = digsbyWxMenuBar(use_umenu, frame)
  160.     menubar = set_menubar(frame, menus, use_umenu)
  161.     app.SetTopWindow(frame)
  162.     if use_umenu:
  163.         sizer.Add(menubar.SizableWindow, 0, wx.EXPAND)
  164.     
  165.     frame.Show()
  166.     app.MainLoop()
  167.  
  168.